package condominios.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
//import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import condominios.modelo.MensajeInterno;
import condominios.modelo.Persona;
import condominios.modelo.Visita;
import condominios.util.utilitario;

/**
 * Servlet implementation class RegistrarVisitaServlet
 */
@WebServlet("/RegistrarVisitaServlet")
public class RegistrarVisitaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	ArrayList<Visita> visitas= new ArrayList<Visita>(); 
	ArrayList<Persona> personas= new ArrayList<Persona>();
	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegistrarVisitaServlet() {
        super();
        // TODO Auto-generated constructor stub
        Persona a= new Persona();
        a.setIdPersona(1);
        a.setNombres("Residente A");
        a.setDni("12345678");
        a.setApellidoPaterno("");
        a.setApellidoMaterno("");
        personas.add(a );
        
        Persona b= new Persona();
        b.setIdPersona(2);
        b.setNombres("Residente B");
        b.setDni("12345678");
        b.setApellidoPaterno("");
        b.setApellidoMaterno("");
        personas.add(b );
        
        Persona c= new Persona();
        c.setIdPersona(3);
        c.setNombres("Residente C");
        c.setDni("12345678");
        c.setApellidoPaterno("");
        c.setApellidoMaterno("");
        personas.add(c);
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		visitas.clear();
		
		for (int i = 1; i < 5; i++) {
			visitas.add(	data(i));
		}
		
		
		// Guardando datos en el scope REQUEST
		request.setAttribute("DATA_LIST", visitas);	
		request.setAttribute("DATA_LIST_RESIDENTE", personas);
		
		RequestDispatcher rd = request.getRequestDispatcher("visitas.jsp");
		rd.forward(request, response);
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
				
		if(request.getParameter("btnfiltrar")!= null){			
			ArrayList<Visita> visitasFiltrado= new ArrayList<Visita>();
			int idResidente= Integer.parseInt(request.getParameter("ddlResidente"));
			
			if(idResidente==0){
				request.setAttribute("DATA_LIST", visitas);
			}else{
				for (Visita item : visitas) {
					if(item.getPersona().getIdPersona() ==idResidente){
						visitasFiltrado.add(item);
					}
				}
				request.setAttribute("DATA_LIST", visitasFiltrado);
			}
			
		}else if(request.getParameter("btngrabar")!=null){
			String RespTrans="";
			
			String id= request.getParameter("txtid");
			int idResidente= Integer.parseInt(request.getParameter("ddlResidente"));
			String numDocumento= request.getParameter("txtdni");
			String nombre= request.getParameter("txtnombre");
			String apellidoPaterno= request.getParameter("txtpaterno");
			String apellidoMaterno= request.getParameter("txtmaterno");
			String fechaHora= request.getParameter("txtfechahora");
			
			int idMax= visitas.size()+1;
			Visita item= new Visita();
			item.setIdVisita(idMax);
			item.setPersona(PersonaById(idResidente));
			item.setNumDocumento(numDocumento);
			item.setNombre(nombre);
			item.setApellidoPaterno(apellidoPaterno);
			item.setApellidoMaterno(apellidoMaterno);
			item.setFechaHora( utilitario.fnFechaHora(fechaHora));

			visitas.add(item);
			
			RespTrans="OK";
			request.setAttribute("RESP_TRANS", RespTrans);
			request.setAttribute("DATA_LIST", visitas);
		}
		
		// Guardando datos en el scope REQUEST
			
		request.setAttribute("DATA_LIST_RESIDENTE", personas);
				
		RequestDispatcher rd = request.getRequestDispatcher("visitas.jsp");
		rd.forward(request, response);
	}

	
	Visita data(int conta){
		GregorianCalendar gc = new GregorianCalendar(2015,2,19);
				
		Visita item= new Visita();
		item.setIdVisita(conta);
		item.setPersona(personas.get(0));
		item.setNumDocumento(conta + "1246798" + conta);
		item.setNombre("Visita"  + conta);
		item.setApellidoPaterno("visita" + conta);
		item.setApellidoMaterno("visita" + conta);
		item.setFechaHora(gc.getTime());
		
		return item;
	}


	
	Persona PersonaById(int idPersona) {
	  for (int i = 0; i < personas.size(); i++) {
	    if (personas.get(i).getIdPersona() == idPersona) {
	      return personas.get(i);
	    }
	  }

	  return null;
	}
	
}
